package com.dlc.shop.dao;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.dlc.shop.bean.dto.BrandShopDTO;
import com.dlc.shop.bean.model.BrandShop;
import com.dlc.shop.bean.vo.BrandShopVO;
import com.dlc.shop.common.util.PageParam;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * @Author lth
 * @Date 2021/7/21 16:23
 */
public interface BrandShopMapper extends BaseMapper<BrandShop> {

    /**
     * 根据品牌类型批量插入品牌店铺关联信息
     * @param shopId 店铺id
     * @param brandShopList 品牌信息列表
     * @param type 签约类型
     * @param status 签约状态
     */
    void insertBatch(@Param("shopId") Long shopId, @Param("brandShopList") List<BrandShopDTO> brandShopList, @Param("type") Integer type, @Param("status") Integer status);

    /**
     * 根据店铺id获取该店铺已签约的品牌信息
     * @param shopId 店铺id
     * @param type 品牌类型
     * @param status 签约状态
     * @return 品牌信息列表
     */
    List<BrandShopVO> listByShopIdAndType(@Param("shopId") Long shopId, @Param("type") Integer type, @Param("status") Integer status);

    /**
     * 根据店铺id更新店铺品牌签约类型
     * @param shopId
     * @param type
     */
    void updateTypeByShopId(@Param("shopId") Long shopId, @Param("type") Integer type);

    /**
     * 根据店铺id与状态更改签约状态
     * @param shopId
     * @param oldStatus
     * @param newStatus
     */
    void changeStatusByShopIdAndStatus(@Param("shopId") Long shopId, @Param("oldStatus") Integer oldStatus, @Param("newStatus") Integer newStatus);

    /**
     * 根据店铺id分页签约的品牌列表
     * @param page
     * @param brandShop
     * @return
     */
    IPage<BrandShopVO> pageSigningByShopId(@Param("page") PageParam<BrandShopVO> page, @Param("brandShop") BrandShopDTO brandShop);

    /**
     * 批量保存签约品牌信息
     * @param shopId
     * @param brandShopList
     * @param type
     * @param status
     */
    void insertBatchByBrandShopList(@Param("shopId") Long shopId, @Param("brandShopList") List<BrandShop> brandShopList, @Param("type") Integer type, @Param("status") Integer status);
}
